package com.zsz.ba04;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;


@Component("myStudent")

//@Value简单类型的属性赋值(顶替了set（）方法)用的反射机制


public class Student {
    @Value(value ="赵书正" )
private String name;
    @Value(value = "20")
private Integer age;

    /**
     * 引用类型
     * @Autowired:spring框架提供的注解，实现引用类型的赋值。
     * spring通过@Autowired注解给引用类型赋值，使用的是自动注入原理
     *
     * @Autowired:默认是用的是byType自动注入。
     *
     */
    @Autowired
//    使用byName的方式自动注入
    @Qualifier("mySchool")
    private School school;

public Student() {
    System.out.println("==Student的无参构造方法调用了。==");
}

public void setName(String name) {
    this.name = name;
}

@Value("25")
public void setAge(Integer age) {
    System.out.println("setAge:"+age);
    this.age = age;
}

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", school=" + school +
                '}';
    }
}
